package com.linkwechat.common.tenant;


import com.alibaba.ttl.TransmittableThreadLocal;
import com.linkwechat.common.core.domain.entity.SysUser;
import lombok.extern.log4j.Log4j2;

import java.util.List;

@Log4j2
public class TenantContextHolder {
    /**
     * 使用ThreadLocal维护变量，ThreadLocal为每个使用该变量的线程提供独立的变量副本，
     *  所以每一个线程都可以独立地改变自己的副本，而不会影响其它线程所对应的副本。
     */
    private static final TransmittableThreadLocal<String> CONTEXT_HOLDER = new TransmittableThreadLocal<>();
    private static final ThreadLocal<List<SysUser>> CONTEXT_SYS_USERS=new ThreadLocal<>();

    /**
     * 设置租户编码的变量
     */
    public static void setTenantCode(String tenantCode)
    {
        log.info("租户编码{}", tenantCode);
        CONTEXT_HOLDER.set(tenantCode);
    }
    /**
     * 获得租户编码的变量
     */
    public static String getTenantCode()
    {
        return CONTEXT_HOLDER.get();
    }

    /**
     * 清空租户编码的变量
     */
    public static void clearTenantCode()
    {
        CONTEXT_HOLDER.remove();
    }


    public static void setSysUsers(List<SysUser> sysUsers){
        CONTEXT_SYS_USERS.set(sysUsers);
    }

    public static List<SysUser> getSysUsers(){
        return CONTEXT_SYS_USERS.get();
    }

    public static void clearSysUsers(){
        CONTEXT_SYS_USERS.remove();
    }


}
